home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / ber / stream / BERElement.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  4.2 KB  |  211 lines

  1. package netscape.ldap.ber.stream;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6.  
  7. public abstract class BERElement {
  8.    public static final int BOOLEAN = 1;
  9.    public static final int INTEGER = 2;
  10.    public static final int BITSTRING = 3;
  11.    public static final int OCTETSTRING = 4;
  12.    public static final int NULL = 5;
  13.    public static final int OBJECTID = 6;
  14.    public static final int REAL = 9;
  15.    public static final int ENUMERATED = 10;
  16.    public static final int SET = 49;
  17.    public static final int SEQUENCE = 48;
  18.    public static final int NUMERICSTRING = 18;
  19.    public static final int PRINTABLESTRING = 19;
  20.    public static final int TELETEXSTRING = 20;
  21.    public static final int VIDEOTEXSTRING = 21;
  22.    public static final int IA5STRING = 22;
  23.    public static final int UTCTIME = 23;
  24.    public static final int GRAPHICSTRING = 25;
  25.    public static final int VISIBLESTRING = 26;
  26.    public static final int GENERALSTRING = 27;
  27.    public static final int TAG = -1;
  28.    public static final int CHOICE = -2;
  29.    public static final int ANY = -3;
  30.    public static final int EOC = 0;
  31.    public static final int UNIVERSAL = 0;
  32.    public static final int APPLICATION = 64;
  33.    public static final int CONTEXT = 128;
  34.    public static final int SASLCONTEXT = 160;
  35.    public static final int PRIVATE = 192;
  36.    public static final int PRIMITIVE = 0;
  37.    public static final int CONSTRUCTED = 32;
  38.    public static final int MRA_OID = 1;
  39.    public static final int MRA_TYPE = 2;
  40.    public static final int MRA_VALUE = 3;
  41.    public static final int MRA_DNATTRS = 4;
  42.    public static final int EXOP_REQ_OID = 0;
  43.    public static final int EXOP_REQ_VALUE = 1;
  44.    public static final int EXOP_RES_OID = 10;
  45.    public static final int EXOP_RES_VALUE = 11;
  46.    public static final int SK_MATCHRULE = 0;
  47.    public static final int SK_REVERSE = 1;
  48.    public static final int SR_ATTRTYPE = 0;
  49.  
  50.    public static BERElement getElement(BERTagDecoder var0, InputStream var1, int[] var2) throws IOException {
  51.       Object var3 = null;
  52.       int var4 = var1.read();
  53.       var2[0] = 1;
  54.       if (var4 == 0) {
  55.          var1.read();
  56.          var2[0] = 1;
  57.          var3 = null;
  58.       } else if (var4 == 1) {
  59.          var3 = new BERBoolean(var1, var2);
  60.       } else if (var4 == 2) {
  61.          var3 = new BERInteger(var1, var2);
  62.       } else if (var4 == 3) {
  63.          var3 = new BERBitString(var1, var2);
  64.       } else if (var4 == 35) {
  65.          var3 = new BERBitString(var0, var1, var2);
  66.       } else if (var4 == 4) {
  67.          var3 = new BEROctetString(var1, var2);
  68.       } else if (var4 == 36) {
  69.          var3 = new BEROctetString(var0, var1, var2);
  70.       } else if (var4 == 5) {
  71.          var3 = new BERNull(var1, var2);
  72.       } else if (var4 == 6) {
  73.          var3 = new BERObjectId(var1, var2);
  74.       } else if (var4 == 9) {
  75.          var3 = new BERReal(var1, var2);
  76.       } else if (var4 == 10) {
  77.          var3 = new BEREnumerated(var1, var2);
  78.       } else if (var4 == 48) {
  79.          var3 = new BERSequence(var0, var1, var2);
  80.       } else if (var4 == 49) {
  81.          var3 = new BERSet(var0, var1, var2);
  82.       } else if (var4 == 18) {
  83.          var3 = new BERNumericString(var1, var2);
  84.       } else if (var4 == 50) {
  85.          var3 = new BERNumericString(var0, var1, var2);
  86.       } else if (var4 == 19) {
  87.          var3 = new BERPrintableString(var1, var2);
  88.       } else if (var4 == 51) {
  89.          var3 = new BERPrintableString(var0, var1, var2);
  90.       } else if (var4 == 23) {
  91.          var3 = new BERUTCTime(var1, var2);
  92.       } else if (var4 == 55) {
  93.          var3 = new BERUTCTime(var0, var1, var2);
  94.       } else if (var4 == 26) {
  95.          var3 = new BERVisibleString(var1, var2);
  96.       } else if (var4 == 58) {
  97.          var3 = new BERVisibleString(var0, var1, var2);
  98.       } else {
  99.          if ((var4 & 192) <= 0) {
  100.             throw new IOException("invalid tag " + var4);
  101.          }
  102.  
  103.          var3 = new BERTag(var0, var4, var1, var2);
  104.       }
  105.  
  106.       return (BERElement)var3;
  107.    }
  108.  
  109.    public static int readLengthOctets(InputStream var0, int[] var1) throws IOException {
  110.       int var2 = 0;
  111.       int var3 = var0.read();
  112.       int var10002 = var1[0]++;
  113.       if (var3 == 128) {
  114.          var2 = -1;
  115.       } else if ((var3 & 128) > 0) {
  116.          int var4 = var3 & 127;
  117.  
  118.          for(int var5 = 0; var5 < var4; ++var5) {
  119.             var3 = var0.read();
  120.             var10002 = var1[0]++;
  121.             var2 = (var2 << 8) + var3;
  122.          }
  123.       } else {
  124.          var2 = var3;
  125.       }
  126.  
  127.       return var2;
  128.    }
  129.  
  130.    public static void sendDefiniteLength(OutputStream var0, int var1) throws IOException {
  131.       if (var1 <= 127) {
  132.          var0.write(var1);
  133.       } else {
  134.          int var2 = 0;
  135.          int var3 = var1;
  136.  
  137.          while(var3 >= 0) {
  138.             ++var2;
  139.             var3 >>= 8;
  140.             if (var3 <= 0) {
  141.                break;
  142.             }
  143.          }
  144.  
  145.          byte[] var4 = new byte[var2 + 1];
  146.          var4[0] = (byte)(128 | var2);
  147.          var3 = var1;
  148.  
  149.          for(int var5 = var2; var5 > 0; --var5) {
  150.             var4[var5] = (byte)(var3 & 255);
  151.             var3 >>= 8;
  152.          }
  153.  
  154.          var0.write(var4);
  155.       }
  156.    }
  157.  
  158.    protected int readUnsignedBinary(InputStream var1, int[] var2, int var3) throws IOException {
  159.       int var4 = 0;
  160.  
  161.       for(int var6 = 0; var6 < var3; ++var6) {
  162.          int var5 = var1.read();
  163.          int var10002 = var2[0]++;
  164.          var4 = (var4 << 8) + var5;
  165.       }
  166.  
  167.       return var4;
  168.    }
  169.  
  170.    protected int readTwosComplement(InputStream var1, int[] var2, int var3) throws IOException {
  171.       int var4 = 0;
  172.       if (var3 > 0) {
  173.          boolean var5 = false;
  174.          int var6 = var1.read();
  175.          int var10002 = var2[0]++;
  176.          if ((var6 & 128) > 0) {
  177.             var5 = true;
  178.          }
  179.  
  180.          for(int var7 = 0; var7 < var3; ++var7) {
  181.             if (var7 > 0) {
  182.                var6 = var1.read();
  183.                var10002 = var2[0]++;
  184.             }
  185.  
  186.             if (var5) {
  187.                var4 = (var4 << 8) + (var6 ^ 255) & 255;
  188.             } else {
  189.                var4 = (var4 << 8) + (var6 & 255);
  190.             }
  191.          }
  192.  
  193.          if (var5) {
  194.             var4 = (var4 + 1) * -1;
  195.          }
  196.       }
  197.  
  198.       return var4;
  199.    }
  200.  
  201.    public String byteToHexString(byte var1) {
  202.       return var1 < 0 ? Integer.toHexString((var1 & 127) + 128) : Integer.toHexString(var1);
  203.    }
  204.  
  205.    public abstract void write(OutputStream var1) throws IOException;
  206.  
  207.    public abstract int getType();
  208.  
  209.    public abstract String toString();
  210. }
  211.